home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2005 October
/
PCWOCT05.iso
/
Software
/
FromTheMag
/
XAMPP 1.4.14
/
xampp-win32-1.4.14-installer.exe
/
xampp
/
php
/
pear
/
Image
/
GIS.php
< prev
next >
Wrap
PHP Script
|
2004-03-24
|
5KB
|
211 lines
<?php
//
// +------------------------------------------------------------------------+
// | PEAR :: Image :: GIS |
// +------------------------------------------------------------------------+
// | Copyright (c) 2002-2004 Jan Kneschke <jan@kneschke.de> and |
// | Sebastian Bergmann <sb@sebastian-bergmann.de>. |
// +------------------------------------------------------------------------+
// | This source file is subject to version 3.00 of the PHP License, |
// | that is available at http://www.php.net/license/3_0.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +------------------------------------------------------------------------+
//
// $Id: GIS.php,v 1.14 2004/01/01 10:31:36 sebastian Exp $
//
require_once 'Image/Color.php';
require_once 'Image/GIS/Parser.php';
require_once 'Image/GIS/Renderer.php';
/**
* ...
*
* The following example draws the region around the
* Germany city of Kiel which is Jan's home town:
*
* <?php
* require_once 'Image/GIS.php';
*
* // Create new map.
* $map = new Image_GIS(
* 'width' => 960,
* 'height' => 1280,
* 'range' => array(
* 'x1' => 9.7,
* 'x2' => 10.5,
* 'y1' => 54.2,
* 'y2' => 54.7
* )
* );
*
* // Political
* $map->addDataFile('germany_ponet.e00', 'black');
*
* // Roads
* $map->addDataFile('germany_rdline.e00', 'gray');
*
* // Populated Places
* $map->addDataFile('germany_pppoly.e00', 'green');
*
* // Drainage
* $map->addDataFile('germany_dnnet.e00', 'blue');
*
* $map->saveImage('kiel.png');
* ?>
*
* @version $Revision: 1.14 $
* @since Image_GIS 1.0.0
*/
class Image_GIS {
/**
* Set to TRUE to enable debugging.
*
* @var boolean $debug
*/
var $debug;
/**
* Image_GIS_Parser sub-class object.
*
* @var Image_GIS_Parser $parser
*/
var $parser;
/**
* Image_GIS_Renderer sub-class object.
*
* @var Image_GIS_Renderer $renderer
*/
var $renderer;
/**
* Constructor.
*
* @param array $parameters
* @access public
*/
function Image_GIS($parameters = array()) {
$this->debug = isset($parameters['debug']) ? $parameters['debug'] : false;
$this->setParser(
isset($parameters['parser']) ? $parameters['parser'] : 'E00',
isset($parameters['cache']) ? $parameters['cache'] : false,
isset($parameters['cacheDir']) ? $parameters['cacheDir'] : '/tmp'
);
$this->setRenderer(
isset($parameters['renderer']) ? $parameters['renderer'] : 'GD',
isset($parameters['width']) ? $parameters['width'] : 640,
isset($parameters['height']) ? $parameters['height'] : 480
);
if (isset($parameters['range']['x1']) &&
isset($parameters['range']['x2']) &&
isset($parameters['range']['y1']) &&
isset($parameters['range']['y2'])) {
$this->setRange(
$parameters['range']['x1'],
$parameters['range']['x2'],
$parameters['range']['y1'],
$parameters['range']['y2']
);
}
}
/**
* Adds a datafile to the map.
*
* @param string $dataFile
* @param mixed $color
* @return boolean
* @access public
*/
function addDataFile($dataFile, $color) {
return $this->parser->addDataFile($dataFile, $color);
}
/**
* Returns the range of the data to be rendered.
*
* @return array
* @access public
* @since Image_GIS 1.0.1
*/
function getRange() {
return $this->renderer->getRange();
}
/**
* Renders the image.
*
* @access public
*/
function render() {
$this->renderer->render($this->parser->parse());
}
/**
* Saves the rendered image to a given file.
*
* @param string $filename
* @return boolean
* @access public
*/
function saveImage($filename) {
$this->render();
return $this->renderer->saveImage($filename);
}
/**
* Sets the Image_GIS_Parser sub-class to be used
* to parse a data file.
*
* @param string $parser
* @param boolean $cache
* @access public
*/
function setParser($parser, $cache) {
$this->parser = &Image_GIS_Parser::factory($parser, $cache, $this->debug);
}
/**
* Sets the range of the data to be rendered.
*
* @param float $x1
* @param float $x2
* @param float $y1
* @param float $y2
* @access public
*/
function setRange($x1, $x2, $y1, $y2) {
$this->renderer->setRange($x1, $x2, $y1, $y2);
}
/**
* Sets the Image_GIS_Renderer sub-class to be used
* to render an image.
*
* @param string $renderer
* @access public
*/
function setRenderer($renderer, $width, $height) {
$this->renderer = &Image_GIS_Renderer::factory($renderer, $width, $height, $this->debug);
}
/**
* Shows the rendered image.
*
* @access public
*/
function showImage() {
$this->render();
$this->renderer->showImage();
}
}
?>